using System;
using System.Collections.Generic;
using System.Text;
using System.Data;           //CommandType
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Etna.Exportaciones.En;

namespace Etna.Exportaciones.Ad
{
   public class AdRequerimientoDetalle
   {
      //public AdRequerimientoDetalle(SqlConnection con)
      //{
      //   conexion = con;
      //}

       public List<EnRequerimientoDetalle> Leer(int pidDetalleRequerimiento, SqlConnection conexion)
      {
          List<EnRequerimientoDetalle> lEnRequerimientoDetalle = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_RequerimientoDetalleLeer", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidDetalleRequerimiento", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidDetalleRequerimiento;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {
             EnRequerimientoDetalle oEnRequerimientoDetalle = new EnRequerimientoDetalle();
             lEnRequerimientoDetalle = new List<EnRequerimientoDetalle>();
             while (drd.Read())
             {
                 oEnRequerimientoDetalle = new EnRequerimientoDetalle();
                 oEnRequerimientoDetalle.idDetalleRequerimiento = drd.GetInt32(0);
                 if (!drd.IsDBNull(1))
                 {
                     oEnRequerimientoDetalle.descripcion = drd.GetString(1);
                 }
                 if (!drd.IsDBNull(2))
                 {
                     oEnRequerimientoDetalle.dPrecio = drd.GetDecimal(2);
                 }
                 if (!drd.IsDBNull(3))
                 {
                     oEnRequerimientoDetalle.dImpuesto = drd.GetDecimal(3);
                 }
                 if (!drd.IsDBNull(4))
                 {
                     oEnRequerimientoDetalle.icantidadSolicitada = drd.GetInt32(4);
                 }
                 if (!drd.IsDBNull(5))
                 {
                     oEnRequerimientoDetalle.dTotal = drd.GetDecimal(5);
                 }

                 lEnRequerimientoDetalle.Add(oEnRequerimientoDetalle);
             }
             drd.Close();
         }

         return lEnRequerimientoDetalle;
      }

       public bool Insertar(EnRequerimientoDetalle poEnRequerimientoDetalle, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_RequerimientoDetalleInsertar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidRequerimiento", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnRequerimientoDetalle.idRequerimiento;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidProducto", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnRequerimientoDetalle.idProducto;

         SqlParameter Parametro3 = cmd.Parameters.Add("@picantidadSolicitada", SqlDbType.Int);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnRequerimientoDetalle.icantidadSolicitada;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }


       public bool Modificar(EnRequerimientoDetalle poEnRequerimientoDetalle, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_RequerimientoDetalleModificar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidDetalleRequerimiento", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnRequerimientoDetalle.idDetalleRequerimiento;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidRequerimiento", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnRequerimientoDetalle.idRequerimiento;

         SqlParameter Parametro3 = cmd.Parameters.Add("@piidProducto", SqlDbType.Int);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnRequerimientoDetalle.idProducto;

         SqlParameter Parametro4 = cmd.Parameters.Add("@picantidadSolicitada", SqlDbType.Int);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnRequerimientoDetalle.icantidadSolicitada;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }

       public List<EnRequerimientoDetalle> Listar(int pidDetalleRequerimiento, SqlConnection conexion)
      {
         List<EnRequerimientoDetalle> loEnRequerimientoDetalle = null;
         EnRequerimientoDetalle oEnRequerimientoDetalle = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_RequerimientoDetalleListar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidDetalleRequerimiento", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidDetalleRequerimiento;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {

            loEnRequerimientoDetalle = new List<EnRequerimientoDetalle>();
            while (drd.Read())
            {
               oEnRequerimientoDetalle = new EnRequerimientoDetalle();
               oEnRequerimientoDetalle.idDetalleRequerimiento = drd.GetInt32(0);
               if (!drd.IsDBNull(1))
               {
                  oEnRequerimientoDetalle.descripcion = drd.GetString(1);
               }
               if (!drd.IsDBNull(2))
               {
                  oEnRequerimientoDetalle.dPrecio = drd.GetDecimal(2);
               }
               if (!drd.IsDBNull(3))
               {
                  oEnRequerimientoDetalle.dImpuesto = drd.GetDecimal(3);
               }
               if (!drd.IsDBNull(4))
               {
                   oEnRequerimientoDetalle.icantidadSolicitada= drd.GetInt32(4);
               }
               if (!drd.IsDBNull(5))
               {
                   oEnRequerimientoDetalle.dTotal = drd.GetDecimal(5);
               }
               loEnRequerimientoDetalle.Add(oEnRequerimientoDetalle);
            }
            drd.Close();
         }

         return loEnRequerimientoDetalle;
      }
   }
}
